(0) Obligation:

JBC Problem based on JBC Program:
No human-readable program information known.

Manifest-Version: 1.0 Created-By: 1.6.0_20 (Apple Inc.) Main-Class: BubbleSortR

(1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

(2) Obligation:

FIGraph based on JBC Program:
Graph of 500 nodes with 2 SCCs.

(3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph to ITRS rules

(4) Complex Obligation (AND)

(5) Obligation:

ITRS problem:

The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean

The TRS R consists of the following rules:
Load2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Cond_Load2339(i304 > 0 && i304 < i303, java.lang.Object(ARRAY(i303, a2291data)), i303, i304)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Load3443(java.lang.Object(ARRAY(i303, a2291data)), i303, i304, 0, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)), 0, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)))
Load3657(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR1(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Load3443ARR1(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Cond_Load3443ARR1(i677 <= i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 < i662 && i661 + 1 > 0, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Cond_Load3443ARR1(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR2(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Load3443ARR2(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Cond_Load3443ARR2(i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 + 1 > 0 && i661 + 1 < i663 && i677 > i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 < i662, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Cond_Load3443ARR2(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Load3657(java.lang.Object(ARRAY(i663, a3434dataNew)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434dataNew)), i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Cond_Load3443(i661 >= i662 && i304 > 0 && i304 + 1 > 0, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)))
Cond_Load3443(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load2339(java.lang.Object(ARRAY(i663, a3434data)), i663, i304 + 1)
The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))
Load3443(java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))
Load3443ARR1(java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6)
Cond_Load3443ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6)
Load3443ARR2(java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6, x7, x8)
Cond_Load3443(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))

(6) GroundTermsRemoverProof (EQUIVALENT transformation)

Some arguments are removed because they always contain the same ground term.
We removed the following ground terms:
  • 0

We removed arguments according to the following replacements:

Cond_Load3443(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) → Cond_Load3443(x1, x2, x3, x4, x6, x7, x8, x9, x10)
Load3657(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Load3657(x1, x2, x3, x5, x6, x7, x8, x9)
Cond_Load3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) → Cond_Load3443ARR2(x1, x2, x3, x4, x6, x7, x8, x9, x10, x11, x12, x13, x14)
Load3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13) → Load3443ARR2(x1, x2, x3, x5, x6, x7, x8, x9, x10, x11, x12, x13)
Cond_Load3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) → Cond_Load3443ARR1(x1, x2, x3, x4, x6, x7, x8, x9, x10, x11, x12)
Load3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) → Load3443ARR1(x1, x2, x3, x5, x6, x7, x8, x9, x10, x11)
Load3443(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Load3443(x1, x2, x3, x5, x6, x7, x8, x9)

(7) Obligation:

ITRS problem:

The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean

The TRS R consists of the following rules:
Load2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Cond_Load2339(i304 > 0 && i304 < i303, java.lang.Object(ARRAY(i303, a2291data)), i303, i304)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Load3443(java.lang.Object(ARRAY(i303, a2291data)), i303, i304, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)), 0, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)))
Load3657(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR1(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Load3443ARR1(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Cond_Load3443ARR1(i677 <= i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 < i662 && i661 + 1 > 0, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Cond_Load3443ARR1(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR2(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Load3443ARR2(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Cond_Load3443ARR2(i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 + 1 > 0 && i661 + 1 < i663 && i677 > i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 < i662, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Cond_Load3443ARR2(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Load3657(java.lang.Object(ARRAY(i663, a3434dataNew)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434dataNew)), i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Cond_Load3443(i661 >= i662 && i304 > 0 && i304 + 1 > 0, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)))
Cond_Load3443(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load2339(java.lang.Object(ARRAY(i663, a3434data)), i663, i304 + 1)
The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))
Load3443(java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))
Load3443ARR1(java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6)
Cond_Load3443ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6)
Load3443ARR2(java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6, x7, x8)
Cond_Load3443(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))

(8) DuplicateArgsRemoverProof (EQUIVALENT transformation)

Some arguments are removed because they only appear as duplicates.
We removed arguments according to the following replacements:

Cond_Load3443(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_Load3443(x1, x3, x4, x7, x8, x9)
Load3657(x1, x2, x3, x4, x5, x6, x7, x8) → Load3657(x2, x3, x6, x7, x8)
Cond_Load3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13) → Cond_Load3443ARR2(x1, x3, x4, x7, x8, x9, x10, x11, x12, x13)
Load3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) → Load3443ARR2(x2, x3, x6, x7, x8, x9, x10, x11, x12)
Cond_Load3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) → Cond_Load3443ARR1(x1, x3, x4, x7, x8, x9, x10, x11)
Load3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) → Load3443ARR1(x2, x3, x6, x7, x8, x9, x10)
Load3443(x1, x2, x3, x4, x5, x6, x7, x8) → Load3443(x2, x3, x6, x7, x8)

(9) Obligation:

ITRS problem:

The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean

The TRS R consists of the following rules:
Load2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Cond_Load2339(i304 > 0 && i304 < i303, java.lang.Object(ARRAY(i303, a2291data)), i303, i304)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Load3443(i303, i304, 0, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)))
Load3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443(i663, i304, i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Load3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Cond_Load3443ARR1(i677 <= i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 < i662 && i661 + 1 > 0, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Cond_Load3443ARR1(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Load3443(i663, i304, i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Load3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Cond_Load3443ARR2(i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 + 1 > 0 && i661 + 1 < i663 && i677 > i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 < i662, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Cond_Load3443ARR2(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Load3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Cond_Load3443(i661 >= i662 && i304 > 0 && i304 + 1 > 0, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)))
Cond_Load3443(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load2339(java.lang.Object(ARRAY(i663, a3434data)), i663, i304 + 1)
The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(10) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(11) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
Load2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Cond_Load2339(i304 > 0 && i304 < i303, java.lang.Object(ARRAY(i303, a2291data)), i303, i304)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Load3443(i303, i304, 0, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)))
Load3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443(i663, i304, i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Load3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Cond_Load3443ARR1(i677 <= i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 < i662 && i661 + 1 > 0, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Cond_Load3443ARR1(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Load3443(i663, i304, i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Load3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Cond_Load3443ARR2(i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 + 1 > 0 && i661 + 1 < i663 && i677 > i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 < i662, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Cond_Load3443ARR2(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Load3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Cond_Load3443(i661 >= i662 && i304 > 0 && i304 + 1 > 0, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)))
Cond_Load3443(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load2339(java.lang.Object(ARRAY(i663, a3434data)), i663, i304 + 1)

The integer pair graph contains the following rules and edges:
(0): LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(i304[0] > 0 && i304[0] < i303[0], java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])
(1): COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, i303[1] - i304[1], java.lang.Object(ARRAY(i303[1], a2291data[1])))
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(9): LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0, i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))
(10): COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], i304[10] + 1)

(0) -> (1), if ((i303[0]* i303[1])∧(i304[0] > 0 && i304[0] < i303[0]* TRUE)∧(java.lang.Object(ARRAY(i303[0], a2291data[0])) →* java.lang.Object(ARRAY(i303[1], a2291data[1])))∧(i304[0]* i304[1]))


(1) -> (3), if ((i303[1] - i304[1]* i662[3])∧(i304[1]* i304[3])∧(i303[1]* i663[3])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(0* i661[3]))


(1) -> (6), if ((i303[1] - i304[1]* i662[6])∧(i304[1]* i304[6])∧(i303[1]* i663[6])∧(0* i661[6])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[6], a3434data[6]))))


(1) -> (9), if ((i304[1]* i304[9])∧(0* i661[9])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[9], a3434data[9])))∧(i303[1]* i663[9])∧(i303[1] - i304[1]* i662[9]))


(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(i661[2] + 1* i661[3]))


(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[6], a3434data[6]))))


(2) -> (9), if ((i662[2]* i662[9])∧(i661[2] + 1* i661[9])∧(i304[2]* i304[9])∧(i663[2]* i663[9])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[9], a3434data[9]))))


(3) -> (4), if ((i706[3]* i706[4])∧(java.lang.Object(ARRAY(i663[3], a3434data[3])) →* java.lang.Object(ARRAY(i663[4], a3434data[4])))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))


(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧(java.lang.Object(ARRAY(i663[4], a3434data[4])) →* java.lang.Object(ARRAY(i663[5], a3434data[5])))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))


(5) -> (3), if ((i661[5] + 1* i661[3])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))


(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[6], a3434data[6])))∧(i663[5]* i663[6]))


(5) -> (9), if ((i661[5] + 1* i661[9])∧(i663[5]* i663[9])∧(i304[5]* i304[9])∧(i662[5]* i662[9])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[9], a3434data[9]))))


(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧(java.lang.Object(ARRAY(i663[6], a3434data[6])) →* java.lang.Object(ARRAY(i663[7], a3434data[7])))∧(i977[6]* i977[7]))


(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧(java.lang.Object(ARRAY(i663[7], a3434data[7])) →* java.lang.Object(ARRAY(i663[8], a3434data[8])))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))


(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧(java.lang.Object(ARRAY(i663[8], a3434dataNew[8])) →* java.lang.Object(ARRAY(i663[2], a3434data[2]))))


(9) -> (10), if ((i304[9]* i304[10])∧(i663[9]* i663[10])∧(java.lang.Object(ARRAY(i663[9], a3434data[9])) →* java.lang.Object(ARRAY(i663[10], a3434data[10])))∧(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0* TRUE)∧(i661[9]* i661[10])∧(i662[9]* i662[10]))


(10) -> (0), if ((i304[10] + 1* i304[0])∧(i663[10]* i303[0])∧(java.lang.Object(ARRAY(i663[10], a3434data[10])) →* java.lang.Object(ARRAY(i303[0], a2291data[0]))))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(12) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(13) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(i304[0] > 0 && i304[0] < i303[0], java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])
(1): COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, i303[1] - i304[1], java.lang.Object(ARRAY(i303[1], a2291data[1])))
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(9): LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0, i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))
(10): COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], i304[10] + 1)

(0) -> (1), if ((i303[0]* i303[1])∧(i304[0] > 0 && i304[0] < i303[0]* TRUE)∧(java.lang.Object(ARRAY(i303[0], a2291data[0])) →* java.lang.Object(ARRAY(i303[1], a2291data[1])))∧(i304[0]* i304[1]))


(1) -> (3), if ((i303[1] - i304[1]* i662[3])∧(i304[1]* i304[3])∧(i303[1]* i663[3])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(0* i661[3]))


(1) -> (6), if ((i303[1] - i304[1]* i662[6])∧(i304[1]* i304[6])∧(i303[1]* i663[6])∧(0* i661[6])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[6], a3434data[6]))))


(1) -> (9), if ((i304[1]* i304[9])∧(0* i661[9])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[9], a3434data[9])))∧(i303[1]* i663[9])∧(i303[1] - i304[1]* i662[9]))


(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(i661[2] + 1* i661[3]))


(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[6], a3434data[6]))))


(2) -> (9), if ((i662[2]* i662[9])∧(i661[2] + 1* i661[9])∧(i304[2]* i304[9])∧(i663[2]* i663[9])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[9], a3434data[9]))))


(3) -> (4), if ((i706[3]* i706[4])∧(java.lang.Object(ARRAY(i663[3], a3434data[3])) →* java.lang.Object(ARRAY(i663[4], a3434data[4])))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))


(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧(java.lang.Object(ARRAY(i663[4], a3434data[4])) →* java.lang.Object(ARRAY(i663[5], a3434data[5])))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))


(5) -> (3), if ((i661[5] + 1* i661[3])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))


(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[6], a3434data[6])))∧(i663[5]* i663[6]))


(5) -> (9), if ((i661[5] + 1* i661[9])∧(i663[5]* i663[9])∧(i304[5]* i304[9])∧(i662[5]* i662[9])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[9], a3434data[9]))))


(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧(java.lang.Object(ARRAY(i663[6], a3434data[6])) →* java.lang.Object(ARRAY(i663[7], a3434data[7])))∧(i977[6]* i977[7]))


(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧(java.lang.Object(ARRAY(i663[7], a3434data[7])) →* java.lang.Object(ARRAY(i663[8], a3434data[8])))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))


(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧(java.lang.Object(ARRAY(i663[8], a3434dataNew[8])) →* java.lang.Object(ARRAY(i663[2], a3434data[2]))))


(9) -> (10), if ((i304[9]* i304[10])∧(i663[9]* i663[10])∧(java.lang.Object(ARRAY(i663[9], a3434data[9])) →* java.lang.Object(ARRAY(i663[10], a3434data[10])))∧(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0* TRUE)∧(i661[9]* i661[10])∧(i662[9]* i662[10]))


(10) -> (0), if ((i304[10] + 1* i304[0])∧(i663[10]* i303[0])∧(java.lang.Object(ARRAY(i663[10], a3434data[10])) →* java.lang.Object(ARRAY(i303[0], a2291data[0]))))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(14) ItpfGraphProof (EQUIVALENT transformation)

Applied rule ItpfICap [ICap]

(15) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(i304[0] > 0 && i304[0] < i303[0], java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])
(1): COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, i303[1] - i304[1], java.lang.Object(ARRAY(i303[1], a2291data[1])))
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(9): LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0, i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))
(10): COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], i304[10] + 1)

(0) -> (1), if ((i303[0]* i303[1])∧(i304[0] > 0 && i304[0] < i303[0]* TRUE)∧((i303[0]* i303[1])∧(a2291data[0]* a2291data[1]))∧(i304[0]* i304[1]))


(1) -> (3), if ((i303[1] - i304[1]* i662[3])∧(i304[1]* i304[3])∧(i303[1]* i663[3])∧((i303[1]* i663[3])∧(a2291data[1]* a3434data[3]))∧(0* i661[3]))


(1) -> (6), if ((i303[1] - i304[1]* i662[6])∧(i304[1]* i304[6])∧(i303[1]* i663[6])∧(0* i661[6])∧((i303[1]* i663[6])∧(a2291data[1]* a3434data[6])))


(1) -> (9), if ((i304[1]* i304[9])∧(0* i661[9])∧((i303[1]* i663[9])∧(a2291data[1]* a3434data[9]))∧(i303[1]* i663[9])∧(i303[1] - i304[1]* i662[9]))


(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))


(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))


(2) -> (9), if ((i662[2]* i662[9])∧(i661[2] + 1* i661[9])∧(i304[2]* i304[9])∧(i663[2]* i663[9])∧((i663[2]* i663[9])∧(a3434data[2]* a3434data[9])))


(3) -> (4), if ((i706[3]* i706[4])∧((i663[3]* i663[4])∧(a3434data[3]* a3434data[4]))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))


(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))


(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))


(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))


(5) -> (9), if ((i661[5] + 1* i661[9])∧(i663[5]* i663[9])∧(i304[5]* i304[9])∧(i662[5]* i662[9])∧((i663[5]* i663[9])∧(a3434data[5]* a3434data[9])))


(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))


(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))


(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))


(9) -> (10), if ((i304[9]* i304[10])∧(i663[9]* i663[10])∧((i663[9]* i663[10])∧(a3434data[9]* a3434data[10]))∧(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0* TRUE)∧(i661[9]* i661[10])∧(i662[9]* i662[10]))


(10) -> (0), if ((i304[10] + 1* i304[0])∧(i663[10]* i303[0])∧((i663[10]* i303[0])∧(a3434data[10]* a2291data[0])))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(16) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair LOAD2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → COND_LOAD2339(&&(>(i304, 0), <(i304, i303)), java.lang.Object(ARRAY(i303, a2291data)), i303, i304) the following chains were created:
  • We consider the chain LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]), COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1]))) which results in the following constraint:

    (1)    (i303[0]=i303[1]&&(>(i304[0], 0), <(i304[0], i303[0]))=TRUEa2291data[0]=a2291data[1]i304[0]=i304[1]LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])≥NonInfC∧LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])≥COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])∧(UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥))



    We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (>(i304[0], 0)=TRUE<(i304[0], i303[0])=TRUELOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])≥NonInfC∧LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])≥COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])∧(UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i304[0] + [-1] ≥ 0∧i303[0] + [-1] + [-1]i304[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧[(-1)Bound*bni_28] + [bni_28]i303[0] + [(-1)bni_28]i304[0] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i304[0] + [-1] ≥ 0∧i303[0] + [-1] + [-1]i304[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧[(-1)Bound*bni_28] + [bni_28]i303[0] + [(-1)bni_28]i304[0] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i304[0] + [-1] ≥ 0∧i303[0] + [-1] + [-1]i304[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧[(-1)Bound*bni_28] + [bni_28]i303[0] + [(-1)bni_28]i304[0] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i304[0] + [-1] ≥ 0∧i303[0] + [-1] + [-1]i304[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i303[0] + [(-1)bni_28]i304[0] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i304[0] ≥ 0∧i303[0] + [-2] + [-1]i304[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧0 = 0∧[(-1)Bound*bni_28 + (-1)bni_28] + [bni_28]i303[0] + [(-1)bni_28]i304[0] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (8)    (i304[0] ≥ 0∧i303[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧0 = 0∧[(-1)Bound*bni_28 + bni_28] + [bni_28]i303[0] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)







For Pair COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → LOAD3443(i303, i304, 0, -(i303, i304), java.lang.Object(ARRAY(i303, a2291data))) the following chains were created:
  • We consider the chain COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1]))) which results in the following constraint:

    (9)    (COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1])≥NonInfC∧COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1])≥LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))∧(UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    ((UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥)∧[(-1)bso_31] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    ((UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥)∧[(-1)bso_31] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    ((UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥)∧[(-1)bso_31] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    ((UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)







For Pair LOAD3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443(i663, i304, +(i661, 1), i662, java.lang.Object(ARRAY(i663, a3434data))) the following chains were created:
  • We consider the chain LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) which results in the following constraint:

    (14)    (LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥NonInfC∧LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))∧(UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥))



    We simplified constraint (14) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (15)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_33] ≥ 0)



    We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (16)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_33] ≥ 0)



    We simplified constraint (16) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (17)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_33] ≥ 0)



    We simplified constraint (17) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (18)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_33] ≥ 0)







For Pair LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) the following chains were created:
  • We consider the chain LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3]) which results in the following constraint:

    (19)    (LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥NonInfC∧LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])∧(UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥))



    We simplified constraint (19) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (20)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[(-1)bso_35] ≥ 0)



    We simplified constraint (20) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (21)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[(-1)bso_35] ≥ 0)



    We simplified constraint (21) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (22)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[(-1)bso_35] ≥ 0)



    We simplified constraint (22) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (23)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)







For Pair LOAD3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677, i706), >(+(i661, 1), 0)), <(+(i661, 1), i663)), >=(i661, 0)), <(i661, i663)), <(i661, i662)), >(+(i661, 1), 0)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) the following chains were created:
  • We consider the chain LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]), COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

    (24)    (i304[4]=i304[5]&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0))=TRUEi661[4]=i661[5]i677[4]=i677[5]i706[4]=i706[5]i663[4]=i663[5]a3434data[4]=a3434data[5]i662[4]=i662[5]LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))



    We simplified constraint (24) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (25)    (>(+(i661[4], 1), 0)=TRUE<(i661[4], i662[4])=TRUE<(i661[4], i663[4])=TRUE>=(i661[4], 0)=TRUE<(+(i661[4], 1), i663[4])=TRUE<=(i677[4], i706[4])=TRUELOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))



    We simplified constraint (25) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (26)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_36] + [bni_36]i663[4] + [(-1)bni_36]i304[4] ≥ 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (26) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (27)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_36] + [bni_36]i663[4] + [(-1)bni_36]i304[4] ≥ 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (27) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (28)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_36] + [bni_36]i663[4] + [(-1)bni_36]i304[4] ≥ 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (28) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (29)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (29) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (30)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (30) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (31)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] ≥ 0∧i661[4] ≥ 0∧[-1] + i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (31) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (32)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (32) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (33)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (33) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (34)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)


    (35)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)







For Pair COND_LOAD3443ARR1(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → LOAD3443(i663, i304, +(i661, 1), i662, java.lang.Object(ARRAY(i663, a3434data))) the following chains were created:
  • We consider the chain COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

    (36)    (COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥NonInfC∧COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))∧(UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥))



    We simplified constraint (36) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (37)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_39] ≥ 0)



    We simplified constraint (37) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (38)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_39] ≥ 0)



    We simplified constraint (38) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (39)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_39] ≥ 0)



    We simplified constraint (39) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (40)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)







For Pair LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) the following chains were created:
  • We consider the chain LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6]) which results in the following constraint:

    (41)    (LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥NonInfC∧LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])∧(UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥))



    We simplified constraint (41) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (42)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_41] ≥ 0)



    We simplified constraint (42) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (43)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_41] ≥ 0)



    We simplified constraint (43) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (44)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_41] ≥ 0)



    We simplified constraint (44) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (45)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)







For Pair LOAD3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661, 1), 0), <(+(i661, 1), i663)), >=(i661, 0)), <(i661, i663)), >(+(i661, 1), 0)), <(+(i661, 1), i663)), >(i677, i706)), >(+(i661, 1), 0)), <(+(i661, 1), i663)), <(i661, i662)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) the following chains were created:
  • We consider the chain LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]), COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

    (46)    (i304[7]=i304[8]i663[7]=i663[8]i662[7]=i662[8]i706[7]=i706[8]i977[7]=i977[8]&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7]))=TRUEi790[7]=i790[8]a3434data[7]=a3434data[8]i661[7]=i661[8]i677[7]=i677[8]LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))



    We simplified constraint (46) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (47)    (<(i661[7], i662[7])=TRUE<(+(i661[7], 1), i663[7])=TRUE>(+(i661[7], 1), 0)=TRUE>(i677[7], i706[7])=TRUE<(i661[7], i663[7])=TRUE>=(i661[7], 0)=TRUELOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))



    We simplified constraint (47) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (48)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)Bound*bni_42] + [bni_42]i663[7] + [(-1)bni_42]i304[7] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (48) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (49)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)Bound*bni_42] + [bni_42]i663[7] + [(-1)bni_42]i304[7] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (49) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (50)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)Bound*bni_42] + [bni_42]i663[7] + [(-1)bni_42]i304[7] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (50) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (51)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (51) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (52)    (i662[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (52) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (53)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (53) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (54)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (54) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (55)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)


    (56)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)







For Pair COND_LOAD3443ARR2(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → LOAD3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew))) the following chains were created:
  • We consider the chain COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

    (57)    (COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥NonInfC∧COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))∧(UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥))



    We simplified constraint (57) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (58)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_45] ≥ 0)



    We simplified constraint (58) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (59)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_45] ≥ 0)



    We simplified constraint (59) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (60)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_45] ≥ 0)



    We simplified constraint (60) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (61)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)







For Pair LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → COND_LOAD3443(&&(&&(>=(i661, i662), >(i304, 0)), >(+(i304, 1), 0)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) the following chains were created:
  • We consider the chain LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))), COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1)) which results in the following constraint:

    (62)    (i304[9]=i304[10]i663[9]=i663[10]a3434data[9]=a3434data[10]&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0))=TRUEi661[9]=i661[10]i662[9]=i662[10]LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))≥NonInfC∧LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))≥COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))∧(UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥))



    We simplified constraint (62) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (63)    (>(+(i304[9], 1), 0)=TRUE>=(i661[9], i662[9])=TRUE>(i304[9], 0)=TRUELOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))≥NonInfC∧LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))≥COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))∧(UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥))



    We simplified constraint (63) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (64)    (i304[9] ≥ 0∧i661[9] + [-1]i662[9] ≥ 0∧i304[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧[(-1)Bound*bni_46] + [bni_46]i663[9] + [(-1)bni_46]i304[9] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (64) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (65)    (i304[9] ≥ 0∧i661[9] + [-1]i662[9] ≥ 0∧i304[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧[(-1)Bound*bni_46] + [bni_46]i663[9] + [(-1)bni_46]i304[9] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (65) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (66)    (i304[9] ≥ 0∧i661[9] + [-1]i662[9] ≥ 0∧i304[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧[(-1)Bound*bni_46] + [bni_46]i663[9] + [(-1)bni_46]i304[9] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (66) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (67)    (i304[9] ≥ 0∧i661[9] + [-1]i662[9] ≥ 0∧i304[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (67) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (68)    ([1] + i304[9] ≥ 0∧i661[9] + [-1]i662[9] ≥ 0∧i304[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (68) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (69)    ([1] + i304[9] ≥ 0∧i661[9] ≥ 0∧i304[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (69) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (70)    ([1] + i304[9] ≥ 0∧i661[9] ≥ 0∧i304[9] ≥ 0∧i662[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)


    (71)    ([1] + i304[9] ≥ 0∧i661[9] ≥ 0∧i304[9] ≥ 0∧i662[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)







For Pair COND_LOAD3443(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD2339(java.lang.Object(ARRAY(i663, a3434data)), i663, +(i304, 1)) the following chains were created:
  • We consider the chain COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1)) which results in the following constraint:

    (72)    (COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10])))≥NonInfC∧COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10])))≥LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))∧(UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥))



    We simplified constraint (72) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (73)    ((UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥)∧[1 + (-1)bso_49] ≥ 0)



    We simplified constraint (73) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (74)    ((UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥)∧[1 + (-1)bso_49] ≥ 0)



    We simplified constraint (74) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (75)    ((UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥)∧[1 + (-1)bso_49] ≥ 0)



    We simplified constraint (75) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (76)    ((UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_49] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → COND_LOAD2339(&&(>(i304, 0), <(i304, i303)), java.lang.Object(ARRAY(i303, a2291data)), i303, i304)
    • (i304[0] ≥ 0∧i303[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧0 = 0∧[(-1)Bound*bni_28 + bni_28] + [bni_28]i303[0] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

  • COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → LOAD3443(i303, i304, 0, -(i303, i304), java.lang.Object(ARRAY(i303, a2291data)))
    • ((UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)

  • LOAD3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443(i663, i304, +(i661, 1), i662, java.lang.Object(ARRAY(i663, a3434data)))
    • ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_33] ≥ 0)

  • LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
    • ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)

  • LOAD3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677, i706), >(+(i661, 1), 0)), <(+(i661, 1), i663)), >=(i661, 0)), <(i661, i663)), <(i661, i662)), >(+(i661, 1), 0)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
    • (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)
    • (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

  • COND_LOAD3443ARR1(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → LOAD3443(i663, i304, +(i661, 1), i662, java.lang.Object(ARRAY(i663, a3434data)))
    • ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)

  • LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
    • ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)

  • LOAD3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661, 1), 0), <(+(i661, 1), i663)), >=(i661, 0)), <(i661, i663)), >(+(i661, 1), 0)), <(+(i661, 1), i663)), >(i677, i706)), >(+(i661, 1), 0)), <(+(i661, 1), i663)), <(i661, i662)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
    • (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)
    • (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)

  • COND_LOAD3443ARR2(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → LOAD3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew)))
    • ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)

  • LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → COND_LOAD3443(&&(&&(>=(i661, i662), >(i304, 0)), >(+(i304, 1), 0)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)))
    • ([1] + i304[9] ≥ 0∧i661[9] ≥ 0∧i304[9] ≥ 0∧i662[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)
    • ([1] + i304[9] ≥ 0∧i661[9] ≥ 0∧i304[9] ≥ 0∧i662[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)

  • COND_LOAD3443(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD2339(java.lang.Object(ARRAY(i663, a3434data)), i663, +(i304, 1))
    • ((UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_49] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD2339(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x3   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1, x2)) = [-1] + [-1]x1   
POL(COND_LOAD2339(x1, x2, x3, x4)) = [-1] + [-1]x2 + [-1]x4   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(<(x1, x2)) = [-1]   
POL(LOAD3443(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + [-1]x2   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(LOAD3657(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + [-1]x2   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7)) = [-1] + [-1]x5 + [-1]x2   
POL(COND_LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8)) = [-1] + [-1]x6 + [-1]x3   
POL(<=(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9)) = [-1] + [-1]x5 + [-1]x2   
POL(COND_LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)) = [-1] + [-1]x6 + [-1]x3   
POL(COND_LOAD3443(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x6 + [-1]x3   

The following pairs are in P>:

COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))

The following pairs are in Pbound:

LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])

The following pairs are in P:

LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])
COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))
LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))

There are no usable rules.

(17) Complex Obligation (AND)

(18) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(i304[0] > 0 && i304[0] < i303[0], java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])
(1): COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, i303[1] - i304[1], java.lang.Object(ARRAY(i303[1], a2291data[1])))
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(9): LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0, i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))

(0) -> (1), if ((i303[0]* i303[1])∧(i304[0] > 0 && i304[0] < i303[0]* TRUE)∧((i303[0]* i303[1])∧(a2291data[0]* a2291data[1]))∧(i304[0]* i304[1]))


(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))


(1) -> (3), if ((i303[1] - i304[1]* i662[3])∧(i304[1]* i304[3])∧(i303[1]* i663[3])∧((i303[1]* i663[3])∧(a2291data[1]* a3434data[3]))∧(0* i661[3]))


(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))


(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))


(3) -> (4), if ((i706[3]* i706[4])∧((i663[3]* i663[4])∧(a3434data[3]* a3434data[4]))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))


(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))


(1) -> (6), if ((i303[1] - i304[1]* i662[6])∧(i304[1]* i304[6])∧(i303[1]* i663[6])∧(0* i661[6])∧((i303[1]* i663[6])∧(a2291data[1]* a3434data[6])))


(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))


(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))


(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))


(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))


(1) -> (9), if ((i304[1]* i304[9])∧(0* i661[9])∧((i303[1]* i663[9])∧(a2291data[1]* a3434data[9]))∧(i303[1]* i663[9])∧(i303[1] - i304[1]* i662[9]))


(2) -> (9), if ((i662[2]* i662[9])∧(i661[2] + 1* i661[9])∧(i304[2]* i304[9])∧(i663[2]* i663[9])∧((i663[2]* i663[9])∧(a3434data[2]* a3434data[9])))


(5) -> (9), if ((i661[5] + 1* i661[9])∧(i663[5]* i663[9])∧(i304[5]* i304[9])∧(i662[5]* i662[9])∧((i663[5]* i663[9])∧(a3434data[5]* a3434data[9])))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(19) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes.

(20) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))


(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))


(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))


(3) -> (4), if ((i706[3]* i706[4])∧((i663[3]* i663[4])∧(a3434data[3]* a3434data[4]))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))


(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))


(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))


(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))


(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))


(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(21) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) the following chains were created:
  • We consider the chain LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) which results in the following constraint:

    (1)    (LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥NonInfC∧LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))∧(UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥))



    We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (2)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_19] ≥ 0)



    We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (3)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_19] ≥ 0)



    We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (4)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_19] ≥ 0)



    We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (5)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_19] ≥ 0)







For Pair COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) the following chains were created:
  • We consider the chain COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

    (6)    (COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥NonInfC∧COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))∧(UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥))



    We simplified constraint (6) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (7)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_21] ≥ 0)



    We simplified constraint (7) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (8)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_21] ≥ 0)



    We simplified constraint (8) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (9)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_21] ≥ 0)



    We simplified constraint (9) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (10)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_21] ≥ 0)







For Pair LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) the following chains were created:
  • We consider the chain LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]), COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

    (11)    (i304[7]=i304[8]i663[7]=i663[8]i662[7]=i662[8]i706[7]=i706[8]i977[7]=i977[8]&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7]))=TRUEi790[7]=i790[8]a3434data[7]=a3434data[8]i661[7]=i661[8]i677[7]=i677[8]LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))



    We simplified constraint (11) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (12)    (<(i661[7], i662[7])=TRUE<(+(i661[7], 1), i663[7])=TRUE>(+(i661[7], 1), 0)=TRUE>(i677[7], i706[7])=TRUE<(i661[7], i663[7])=TRUE>=(i661[7], 0)=TRUELOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))



    We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (13)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i661[7] + [bni_22]i662[7] ≥ 0∧[(-1)bso_23] ≥ 0)



    We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (14)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i661[7] + [bni_22]i662[7] ≥ 0∧[(-1)bso_23] ≥ 0)



    We simplified constraint (14) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (15)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i661[7] + [bni_22]i662[7] ≥ 0∧[(-1)bso_23] ≥ 0)



    We simplified constraint (15) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (16)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i661[7] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)



    We simplified constraint (16) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (17)    (i662[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)



    We simplified constraint (17) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (18)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)



    We simplified constraint (18) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (19)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)



    We simplified constraint (19) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (20)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)


    (21)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)







For Pair LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6]) the following chains were created:
  • We consider the chain LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6]) which results in the following constraint:

    (22)    (LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥NonInfC∧LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])∧(UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥))



    We simplified constraint (22) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (23)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (23) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (24)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (24) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (25)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (25) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (26)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_25] ≥ 0)







For Pair COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) the following chains were created:
  • We consider the chain COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

    (27)    (COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥NonInfC∧COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))∧(UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥))



    We simplified constraint (27) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (28)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_27] ≥ 0)



    We simplified constraint (28) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (29)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_27] ≥ 0)



    We simplified constraint (29) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (30)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_27] ≥ 0)



    We simplified constraint (30) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (31)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_27] ≥ 0)







For Pair LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) the following chains were created:
  • We consider the chain LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]), COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

    (32)    (i304[4]=i304[5]&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0))=TRUEi661[4]=i661[5]i677[4]=i677[5]i706[4]=i706[5]i663[4]=i663[5]a3434data[4]=a3434data[5]i662[4]=i662[5]LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))



    We simplified constraint (32) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (33)    (>(+(i661[4], 1), 0)=TRUE<(i661[4], i662[4])=TRUE<(i661[4], i663[4])=TRUE>=(i661[4], 0)=TRUE<(+(i661[4], 1), i663[4])=TRUE<=(i677[4], i706[4])=TRUELOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))



    We simplified constraint (33) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (34)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]i662[4] + [(-1)bni_28]i661[4] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (34) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (35)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]i662[4] + [(-1)bni_28]i661[4] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (35) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (36)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]i662[4] + [(-1)bni_28]i661[4] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (36) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (37)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]i662[4] + [(-1)bni_28]i661[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (37) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (38)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (38) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (39)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] ≥ 0∧i661[4] ≥ 0∧[-1] + i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (39) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (40)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (40) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (41)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (42)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)


    (43)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)







For Pair LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3]) the following chains were created:
  • We consider the chain LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3]) which results in the following constraint:

    (44)    (LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥NonInfC∧LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])∧(UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_31] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_31] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_31] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_31] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
    • ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_19] ≥ 0)

  • COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
    • ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_21] ≥ 0)

  • LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
    • (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)
    • (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)

  • LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
    • ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_25] ≥ 0)

  • COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
    • ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_27] ≥ 0)

  • LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
    • (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)
    • (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

  • LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
    • ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_31] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD3657(x1, x2, x3, x4, x5)) = [-1] + [-1]x3 + x4   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(LOAD3443(x1, x2, x3, x4, x5)) = [-1]x3 + x4   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(COND_LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)) = [-1] + [-1]x4 + x5   
POL(LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9)) = [-1] + [-1]x3 + x4   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(<(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(COND_LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8)) = [-1] + x5 + [-1]x4   
POL(LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7)) = [-1] + x4 + [-1]x3   
POL(<=(x1, x2)) = [-1]   

The following pairs are in P>:

LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

The following pairs are in Pbound:

LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

The following pairs are in P:

LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

There are no usable rules.

(22) Complex Obligation (AND)

(23) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))


(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))


(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(24) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 5 less nodes.

(25) TRUE

(26) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))


(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))


(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))


(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))


(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(27) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 5 less nodes.

(28) TRUE

(29) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, i303[1] - i304[1], java.lang.Object(ARRAY(i303[1], a2291data[1])))
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(9): LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0, i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))
(10): COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], i304[10] + 1)

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))


(1) -> (3), if ((i303[1] - i304[1]* i662[3])∧(i304[1]* i304[3])∧(i303[1]* i663[3])∧((i303[1]* i663[3])∧(a2291data[1]* a3434data[3]))∧(0* i661[3]))


(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))


(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))


(3) -> (4), if ((i706[3]* i706[4])∧((i663[3]* i663[4])∧(a3434data[3]* a3434data[4]))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))


(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))


(1) -> (6), if ((i303[1] - i304[1]* i662[6])∧(i304[1]* i304[6])∧(i303[1]* i663[6])∧(0* i661[6])∧((i303[1]* i663[6])∧(a2291data[1]* a3434data[6])))


(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))


(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))


(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))


(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))


(1) -> (9), if ((i304[1]* i304[9])∧(0* i661[9])∧((i303[1]* i663[9])∧(a2291data[1]* a3434data[9]))∧(i303[1]* i663[9])∧(i303[1] - i304[1]* i662[9]))


(2) -> (9), if ((i662[2]* i662[9])∧(i661[2] + 1* i661[9])∧(i304[2]* i304[9])∧(i663[2]* i663[9])∧((i663[2]* i663[9])∧(a3434data[2]* a3434data[9])))


(5) -> (9), if ((i661[5] + 1* i661[9])∧(i663[5]* i663[9])∧(i304[5]* i304[9])∧(i662[5]* i662[9])∧((i663[5]* i663[9])∧(a3434data[5]* a3434data[9])))


(9) -> (10), if ((i304[9]* i304[10])∧(i663[9]* i663[10])∧((i663[9]* i663[10])∧(a3434data[9]* a3434data[10]))∧(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0* TRUE)∧(i661[9]* i661[10])∧(i662[9]* i662[10]))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(30) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes.

(31) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))


(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))


(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))


(3) -> (4), if ((i706[3]* i706[4])∧((i663[3]* i663[4])∧(a3434data[3]* a3434data[4]))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))


(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))


(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))


(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))


(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))


(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(32) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) the following chains were created:
  • We consider the chain LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) which results in the following constraint:

    (1)    (LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥NonInfC∧LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))∧(UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥))



    We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (2)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_16] ≥ 0)



    We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (3)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_16] ≥ 0)



    We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (4)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_16] ≥ 0)



    We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (5)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







For Pair COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) the following chains were created:
  • We consider the chain COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

    (6)    (COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥NonInfC∧COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))∧(UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥))



    We simplified constraint (6) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (7)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[1 + (-1)bso_18] ≥ 0)



    We simplified constraint (7) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (8)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[1 + (-1)bso_18] ≥ 0)



    We simplified constraint (8) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (9)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[1 + (-1)bso_18] ≥ 0)



    We simplified constraint (9) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (10)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_18] ≥ 0)







For Pair LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) the following chains were created:
  • We consider the chain LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]), COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

    (11)    (i304[7]=i304[8]i663[7]=i663[8]i662[7]=i662[8]i706[7]=i706[8]i977[7]=i977[8]&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7]))=TRUEi790[7]=i790[8]a3434data[7]=a3434data[8]i661[7]=i661[8]i677[7]=i677[8]LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))



    We simplified constraint (11) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (12)    (<(i661[7], i662[7])=TRUE<(+(i661[7], 1), i663[7])=TRUE>(+(i661[7], 1), 0)=TRUE>(i677[7], i706[7])=TRUE<(i661[7], i663[7])=TRUE>=(i661[7], 0)=TRUELOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))



    We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (13)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]i661[7] + [bni_19]i663[7] ≥ 0∧[(-1)bso_20] ≥ 0)



    We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (14)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]i661[7] + [bni_19]i663[7] ≥ 0∧[(-1)bso_20] ≥ 0)



    We simplified constraint (14) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (15)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]i661[7] + [bni_19]i663[7] ≥ 0∧[(-1)bso_20] ≥ 0)



    We simplified constraint (15) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (16)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]i661[7] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)



    We simplified constraint (16) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (17)    (i662[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]i661[7] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)



    We simplified constraint (17) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (18)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)



    We simplified constraint (18) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (19)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)



    We simplified constraint (19) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (20)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)


    (21)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)







For Pair LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6]) the following chains were created:
  • We consider the chain LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6]) which results in the following constraint:

    (22)    (LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥NonInfC∧LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])∧(UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥))



    We simplified constraint (22) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (23)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_22] ≥ 0)



    We simplified constraint (23) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (24)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_22] ≥ 0)



    We simplified constraint (24) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (25)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_22] ≥ 0)



    We simplified constraint (25) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (26)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)







For Pair COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) the following chains were created:
  • We consider the chain COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

    (27)    (COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥NonInfC∧COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))∧(UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥))



    We simplified constraint (27) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (28)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_24] ≥ 0)



    We simplified constraint (28) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (29)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_24] ≥ 0)



    We simplified constraint (29) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (30)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_24] ≥ 0)



    We simplified constraint (30) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (31)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_24] ≥ 0)







For Pair LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) the following chains were created:
  • We consider the chain LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]), COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

    (32)    (i304[4]=i304[5]&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0))=TRUEi661[4]=i661[5]i677[4]=i677[5]i706[4]=i706[5]i663[4]=i663[5]a3434data[4]=a3434data[5]i662[4]=i662[5]LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))



    We simplified constraint (32) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (33)    (>(+(i661[4], 1), 0)=TRUE<(i661[4], i662[4])=TRUE<(i661[4], i663[4])=TRUE>=(i661[4], 0)=TRUE<(+(i661[4], 1), i663[4])=TRUE<=(i677[4], i706[4])=TRUELOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))



    We simplified constraint (33) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (34)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_25] + [bni_25]i663[4] + [(-1)bni_25]i661[4] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (34) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (35)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_25] + [bni_25]i663[4] + [(-1)bni_25]i661[4] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (35) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (36)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_25] + [bni_25]i663[4] + [(-1)bni_25]i661[4] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (36) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (37)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25] + [bni_25]i663[4] + [(-1)bni_25]i661[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (37) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (38)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25] + [bni_25]i663[4] + [(-1)bni_25]i661[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (38) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (39)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] ≥ 0∧i661[4] ≥ 0∧[-1] + i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (39) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (40)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (40) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (41)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (42)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)


    (43)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)







For Pair LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3]) the following chains were created:
  • We consider the chain LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3]) which results in the following constraint:

    (44)    (LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥NonInfC∧LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])∧(UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
    • ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)

  • COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
    • ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_18] ≥ 0)

  • LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
    • (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)
    • (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)

  • LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
    • ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)

  • COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
    • ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_24] ≥ 0)

  • LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
    • (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)
    • (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)

  • LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
    • ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD3657(x1, x2, x3, x4, x5)) = [-1] + [-1]x3 + [-1]x5   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1, x2)) = [-1] + [-1]x1   
POL(LOAD3443(x1, x2, x3, x4, x5)) = [-1]x3 + [-1]x5   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(COND_LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)) = [-1]x4 + [-1]x6   
POL(LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9)) = [-1]x3 + [-1]x5   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = 0   
POL(0) = 0   
POL(<(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(COND_LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8)) = [-1] + [-1]x6 + [-1]x4   
POL(LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7)) = [-1] + [-1]x5 + [-1]x3   
POL(<=(x1, x2)) = [-1]   

The following pairs are in P>:

COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

The following pairs are in Pbound:

LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

The following pairs are in P:

LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

There are no usable rules.

(33) Complex Obligation (AND)

(34) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))


(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))


(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))


(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(35) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 5 less nodes.

(36) TRUE

(37) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))


(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))


(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))


(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))


(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))



The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

(38) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 5 less nodes.

(39) TRUE

(40) Obligation:

ITRS problem:

The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean

The TRS R consists of the following rules:
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_Load1777(i2 > 0 && i139 >= i2 && i140 < i70, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(ARRAY(i70, a1655data)), i140)
ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_ArrayAccess2263(i140 >= 0 && i140 < i70 && i140 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Cond_Load1777ARR3(i140 >= 0 && i140 < i70 && i139 > 0 && i139 < i2 && i140 + 1 > 0 && i139 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139 + 1, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)
The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

(41) DuplicateArgsRemoverProof (EQUIVALENT transformation)

Some arguments are removed because they only appear as duplicates.
We removed arguments according to the following replacements:

Cond_ArrayAccess2263(x1, x2, x3, x4, x5, x6, x7) → Cond_ArrayAccess2263(x1, x2, x3, x6, x7)
ArrayAccess2263(x1, x2, x3, x4, x5, x6) → ArrayAccess2263(x1, x2, x5, x6)

(42) Obligation:

ITRS problem:

The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean

The TRS R consists of the following rules:
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_Load1777(i2 > 0 && i139 >= i2 && i140 < i70, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_ArrayAccess2263(i140 >= 0 && i140 < i70 && i140 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Cond_Load1777ARR3(i140 >= 0 && i140 < i70 && i139 > 0 && i139 < i2 && i140 + 1 > 0 && i139 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139 + 1, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)
The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

(43) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(44) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_Load1777(i2 > 0 && i139 >= i2 && i140 < i70, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_ArrayAccess2263(i140 >= 0 && i140 < i70 && i140 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Cond_Load1777ARR3(i140 >= 0 && i140 < i70 && i139 > 0 && i139 < i2 && i140 + 1 > 0 && i139 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139 + 1, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)

The integer pair graph contains the following rules and edges:
(0): LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0], java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])
(1): COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])
(2): ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0, java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])
(3): COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3]) → LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), i140[3] + 1)
(4): LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))
(5): LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0, java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)

(0) -> (1), if ((i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0]* TRUE)∧(i140[0]* i140[1])∧(java.lang.Object(ARRAY(i2[0], a1654data[0])) →* java.lang.Object(ARRAY(i2[1], a1654data[1])))∧(java.lang.Object(ARRAY(i70[0], a1655data[0])) →* java.lang.Object(ARRAY(i70[1], a1655data[1])))∧(i139[0]* i139[1]))


(1) -> (2), if ((i140[1]* i140[2])∧(java.lang.Object(ARRAY(i70[1], a1655data[1])) →* java.lang.Object(ARRAY(i70[2], a1655data[2])))∧(java.lang.Object(ARRAY(i2[1], a1654data[1])) →* java.lang.Object(ARRAY(i2[2], a1654data[2])))∧(i139[1]* i188[2]))


(2) -> (3), if ((i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0* TRUE)∧(i188[2]* i188[3])∧(i140[2]* i140[3])∧(java.lang.Object(ARRAY(i70[2], a1655data[2])) →* java.lang.Object(ARRAY(i70[3], a1655data[3])))∧(java.lang.Object(ARRAY(i2[2], a1654data[2])) →* java.lang.Object(ARRAY(i2[3], a1654data[3]))))


(3) -> (0), if ((java.lang.Object(ARRAY(i2[3], a1654data[3])) →* java.lang.Object(ARRAY(i2[0], a1654data[0])))∧(i188[3]* i139[0])∧(i140[3] + 1* i140[0])∧(java.lang.Object(ARRAY(i70[3], a1655dataNew[3])) →* java.lang.Object(ARRAY(i70[0], a1655data[0]))))


(3) -> (4), if ((java.lang.Object(ARRAY(i2[3], a1654data[3])) →* java.lang.Object(ARRAY(i2[4], a1654data[4])))∧(i188[3]* i139[4])∧(java.lang.Object(ARRAY(i70[3], a1655dataNew[3])) →* java.lang.Object(ARRAY(i70[4], a1655data[4])))∧(i140[3] + 1* i140[4]))


(4) -> (5), if ((i140[4]* i140[5])∧(java.lang.Object(ARRAY(i70[4], a1655data[4])) →* java.lang.Object(ARRAY(i70[5], a1655data[5])))∧(i139[4]* i139[5])∧(java.lang.Object(ARRAY(i2[4], a1654data[4])) →* java.lang.Object(ARRAY(i2[5], a1654data[5])))∧(java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])) →* java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))))


(5) -> (6), if ((i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0* TRUE)∧(java.lang.Object(ARRAY(i70[5], a1655data[5])) →* java.lang.Object(ARRAY(i70[6], a1655data[6])))∧(i140[5]* i140[6])∧(i139[5]* i139[6])∧(java.lang.Object(ARRAY(i2[5], a1654data[5])) →* java.lang.Object(ARRAY(i2[6], a1654data[6])))∧(java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])) →* java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))))


(6) -> (0), if ((java.lang.Object(ARRAY(i70[6], a1655dataNew[6])) →* java.lang.Object(ARRAY(i70[0], a1655data[0])))∧(i139[6] + 1* i139[0])∧(java.lang.Object(ARRAY(i2[6], a1654data[6])) →* java.lang.Object(ARRAY(i2[0], a1654data[0])))∧(i140[6] + 1* i140[0]))


(6) -> (4), if ((i140[6] + 1* i140[4])∧(i139[6] + 1* i139[4])∧(java.lang.Object(ARRAY(i70[6], a1655dataNew[6])) →* java.lang.Object(ARRAY(i70[4], a1655data[4])))∧(java.lang.Object(ARRAY(i2[6], a1654data[6])) →* java.lang.Object(ARRAY(i2[4], a1654data[4]))))



The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

(45) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(46) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0], java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])
(1): COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])
(2): ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0, java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])
(3): COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3]) → LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), i140[3] + 1)
(4): LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))
(5): LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0, java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)

(0) -> (1), if ((i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0]* TRUE)∧(i140[0]* i140[1])∧(java.lang.Object(ARRAY(i2[0], a1654data[0])) →* java.lang.Object(ARRAY(i2[1], a1654data[1])))∧(java.lang.Object(ARRAY(i70[0], a1655data[0])) →* java.lang.Object(ARRAY(i70[1], a1655data[1])))∧(i139[0]* i139[1]))


(1) -> (2), if ((i140[1]* i140[2])∧(java.lang.Object(ARRAY(i70[1], a1655data[1])) →* java.lang.Object(ARRAY(i70[2], a1655data[2])))∧(java.lang.Object(ARRAY(i2[1], a1654data[1])) →* java.lang.Object(ARRAY(i2[2], a1654data[2])))∧(i139[1]* i188[2]))


(2) -> (3), if ((i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0* TRUE)∧(i188[2]* i188[3])∧(i140[2]* i140[3])∧(java.lang.Object(ARRAY(i70[2], a1655data[2])) →* java.lang.Object(ARRAY(i70[3], a1655data[3])))∧(java.lang.Object(ARRAY(i2[2], a1654data[2])) →* java.lang.Object(ARRAY(i2[3], a1654data[3]))))


(3) -> (0), if ((java.lang.Object(ARRAY(i2[3], a1654data[3])) →* java.lang.Object(ARRAY(i2[0], a1654data[0])))∧(i188[3]* i139[0])∧(i140[3] + 1* i140[0])∧(java.lang.Object(ARRAY(i70[3], a1655dataNew[3])) →* java.lang.Object(ARRAY(i70[0], a1655data[0]))))


(3) -> (4), if ((java.lang.Object(ARRAY(i2[3], a1654data[3])) →* java.lang.Object(ARRAY(i2[4], a1654data[4])))∧(i188[3]* i139[4])∧(java.lang.Object(ARRAY(i70[3], a1655dataNew[3])) →* java.lang.Object(ARRAY(i70[4], a1655data[4])))∧(i140[3] + 1* i140[4]))


(4) -> (5), if ((i140[4]* i140[5])∧(java.lang.Object(ARRAY(i70[4], a1655data[4])) →* java.lang.Object(ARRAY(i70[5], a1655data[5])))∧(i139[4]* i139[5])∧(java.lang.Object(ARRAY(i2[4], a1654data[4])) →* java.lang.Object(ARRAY(i2[5], a1654data[5])))∧(java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])) →* java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))))


(5) -> (6), if ((i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0* TRUE)∧(java.lang.Object(ARRAY(i70[5], a1655data[5])) →* java.lang.Object(ARRAY(i70[6], a1655data[6])))∧(i140[5]* i140[6])∧(i139[5]* i139[6])∧(java.lang.Object(ARRAY(i2[5], a1654data[5])) →* java.lang.Object(ARRAY(i2[6], a1654data[6])))∧(java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])) →* java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))))


(6) -> (0), if ((java.lang.Object(ARRAY(i70[6], a1655dataNew[6])) →* java.lang.Object(ARRAY(i70[0], a1655data[0])))∧(i139[6] + 1* i139[0])∧(java.lang.Object(ARRAY(i2[6], a1654data[6])) →* java.lang.Object(ARRAY(i2[0], a1654data[0])))∧(i140[6] + 1* i140[0]))


(6) -> (4), if ((i140[6] + 1* i140[4])∧(i139[6] + 1* i139[4])∧(java.lang.Object(ARRAY(i70[6], a1655dataNew[6])) →* java.lang.Object(ARRAY(i70[4], a1655data[4])))∧(java.lang.Object(ARRAY(i2[6], a1654data[6])) →* java.lang.Object(ARRAY(i2[4], a1654data[4]))))



The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

(47) ItpfGraphProof (EQUIVALENT transformation)

Applied rule ItpfICap [ICap]

(48) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0], java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])
(1): COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])
(2): ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0, java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])
(3): COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3]) → LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), i140[3] + 1)
(4): LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))
(5): LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0, java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)

(0) -> (1), if ((i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0]* TRUE)∧(i140[0]* i140[1])∧((i2[0]* i2[1])∧(a1654data[0]* a1654data[1]))∧((i70[0]* i70[1])∧(a1655data[0]* a1655data[1]))∧(i139[0]* i139[1]))


(1) -> (2), if ((i140[1]* i140[2])∧((i70[1]* i70[2])∧(a1655data[1]* a1655data[2]))∧((i2[1]* i2[2])∧(a1654data[1]* a1654data[2]))∧(i139[1]* i188[2]))


(2) -> (3), if ((i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0* TRUE)∧(i188[2]* i188[3])∧(i140[2]* i140[3])∧((i70[2]* i70[3])∧(a1655data[2]* a1655data[3]))∧((i2[2]* i2[3])∧(a1654data[2]* a1654data[3])))


(3) -> (0), if (((i2[3]* i2[0])∧(a1654data[3]* a1654data[0]))∧(i188[3]* i139[0])∧(i140[3] + 1* i140[0])∧((i70[3]* i70[0])∧(a1655dataNew[3]* a1655data[0])))


(3) -> (4), if (((i2[3]* i2[4])∧(a1654data[3]* a1654data[4]))∧(i188[3]* i139[4])∧((i70[3]* i70[4])∧(a1655dataNew[3]* a1655data[4]))∧(i140[3] + 1* i140[4]))


(4) -> (5), if ((i140[4]* i140[5])∧((i70[4]* i70[5])∧(a1655data[4]* a1655data[5]))∧(i139[4]* i139[5])∧((i2[4]* i2[5])∧(a1654data[4]* a1654data[5]))∧((i261[4]* i261[5])∧(i260[4]* i260[5])∧(i262[4]* i262[5])∧(a2155[4]* a2155[5])))


(5) -> (6), if ((i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0* TRUE)∧((i70[5]* i70[6])∧(a1655data[5]* a1655data[6]))∧(i140[5]* i140[6])∧(i139[5]* i139[6])∧((i2[5]* i2[6])∧(a1654data[5]* a1654data[6]))∧((i261[5]* i261[6])∧(i260[5]* i260[6])∧(i262[5]* i262[6])∧(a2155[5]* a2155[6])))


(6) -> (0), if (((i70[6]* i70[0])∧(a1655dataNew[6]* a1655data[0]))∧(i139[6] + 1* i139[0])∧((i2[6]* i2[0])∧(a1654data[6]* a1654data[0]))∧(i140[6] + 1* i140[0]))


(6) -> (4), if ((i140[6] + 1* i140[4])∧(i139[6] + 1* i139[4])∧((i70[6]* i70[4])∧(a1655dataNew[6]* a1655data[4]))∧((i2[6]* i2[4])∧(a1654data[6]* a1654data[4])))



The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

(49) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair LOAD1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → COND_LOAD1777(&&(&&(>(i2, 0), >=(i139, i2)), <(i140, i70)), java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) the following chains were created:
  • We consider the chain LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]), COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) which results in the following constraint:

    (1)    (&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0]))=TRUEi140[0]=i140[1]i2[0]=i2[1]a1654data[0]=a1654data[1]i70[0]=i70[1]a1655data[0]=a1655data[1]i139[0]=i139[1]LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])≥NonInfC∧LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])≥COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])∧(UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥))



    We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (<(i140[0], i70[0])=TRUE>(i2[0], 0)=TRUE>=(i139[0], i2[0])=TRUELOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])≥NonInfC∧LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])≥COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])∧(UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i70[0] + [-1] + [-1]i140[0] ≥ 0∧i2[0] + [-1] ≥ 0∧i139[0] + [-1]i2[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧[(-1)Bound*bni_21] + [(-1)bni_21]i140[0] + [bni_21]i70[0] + [bni_21]i139[0] ≥ 0∧[(-1)bso_22] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i70[0] + [-1] + [-1]i140[0] ≥ 0∧i2[0] + [-1] ≥ 0∧i139[0] + [-1]i2[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧[(-1)Bound*bni_21] + [(-1)bni_21]i140[0] + [bni_21]i70[0] + [bni_21]i139[0] ≥ 0∧[(-1)bso_22] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i70[0] + [-1] + [-1]i140[0] ≥ 0∧i2[0] + [-1] ≥ 0∧i139[0] + [-1]i2[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧[(-1)Bound*bni_21] + [(-1)bni_21]i140[0] + [bni_21]i70[0] + [bni_21]i139[0] ≥ 0∧[(-1)bso_22] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i70[0] + [-1] + [-1]i140[0] ≥ 0∧i2[0] + [-1] ≥ 0∧i139[0] + [-1]i2[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_21] + [(-1)bni_21]i140[0] + [bni_21]i70[0] + [bni_21]i139[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i70[0] ≥ 0∧i2[0] + [-1] ≥ 0∧i139[0] + [-1]i2[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_21 + bni_21] + [bni_21]i70[0] + [bni_21]i139[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (8)    (i70[0] ≥ 0∧i2[0] ≥ 0∧i139[0] + [-1] + [-1]i2[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_21 + bni_21] + [bni_21]i70[0] + [bni_21]i139[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)



    We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (9)    (i70[0] ≥ 0∧i2[0] ≥ 0∧i139[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_21 + (2)bni_21] + [bni_21]i70[0] + [bni_21]i2[0] + [bni_21]i139[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)



    We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (10)    (i70[0] ≥ 0∧i2[0] ≥ 0∧i139[0] ≥ 0∧i140[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_21 + (2)bni_21] + [bni_21]i70[0] + [bni_21]i2[0] + [bni_21]i139[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)


    (11)    (i70[0] ≥ 0∧i2[0] ≥ 0∧i139[0] ≥ 0∧i140[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_21 + (2)bni_21] + [bni_21]i70[0] + [bni_21]i2[0] + [bni_21]i139[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)







For Pair COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) the following chains were created:
  • We consider the chain COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]), ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) which results in the following constraint:

    (12)    (i140[1]=i140[2]i70[1]=i70[2]a1655data[1]=a1655data[2]i2[1]=i2[2]a1654data[1]=a1654data[2]i139[1]=i188[2]COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])≥NonInfC∧COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])≥ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])∧(UIncreasing(ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])), ≥))



    We simplified constraint (12) using rule (IV) which results in the following new constraint:

    (13)    (COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])≥NonInfC∧COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])≥ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])∧(UIncreasing(ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])), ≥))



    We simplified constraint (13) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (14)    ((UIncreasing(ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])), ≥)∧[(-1)bso_24] ≥ 0)



    We simplified constraint (14) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (15)    ((UIncreasing(ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])), ≥)∧[(-1)bso_24] ≥ 0)



    We simplified constraint (15) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (16)    ((UIncreasing(ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])), ≥)∧[(-1)bso_24] ≥ 0)



    We simplified constraint (16) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (17)    ((UIncreasing(ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_24] ≥ 0)







For Pair ARRAYACCESS2263(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → COND_ARRAYACCESS2263(&&(&&(>=(i140, 0), <(i140, i70)), >(+(i140, 1), 0)), java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) the following chains were created:
  • We consider the chain ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]), COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3]) → LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), +(i140[3], 1)) which results in the following constraint:

    (18)    (&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0))=TRUEi188[2]=i188[3]i140[2]=i140[3]i70[2]=i70[3]a1655data[2]=a1655data[3]i2[2]=i2[3]a1654data[2]=a1654data[3]ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])≥NonInfC∧ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])≥COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])∧(UIncreasing(COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])), ≥))



    We simplified constraint (18) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (19)    (>(+(i140[2], 1), 0)=TRUE>=(i140[2], 0)=TRUE<(i140[2], i70[2])=TRUEARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])≥NonInfC∧ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])≥COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])∧(UIncreasing(COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])), ≥))



    We simplified constraint (19) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (20)    (i140[2] ≥ 0∧i140[2] ≥ 0∧i70[2] + [-1] + [-1]i140[2] ≥ 0 ⇒ (UIncreasing(COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])), ≥)∧[(-1)Bound*bni_25] + [(-1)bni_25]i140[2] + [bni_25]i70[2] + [bni_25]i188[2] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (20) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (21)    (i140[2] ≥ 0∧i140[2] ≥ 0∧i70[2] + [-1] + [-1]i140[2] ≥ 0 ⇒ (UIncreasing(COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])), ≥)∧[(-1)Bound*bni_25] + [(-1)bni_25]i140[2] + [bni_25]i70[2] + [bni_25]i188[2] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (21) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (22)    (i140[2] ≥ 0∧i140[2] ≥ 0∧i70[2] + [-1] + [-1]i140[2] ≥ 0 ⇒ (UIncreasing(COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])), ≥)∧[(-1)Bound*bni_25] + [(-1)bni_25]i140[2] + [bni_25]i70[2] + [bni_25]i188[2] ≥ 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (22) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (23)    (i140[2] ≥ 0∧i140[2] ≥ 0∧i70[2] + [-1] + [-1]i140[2] ≥ 0 ⇒ (UIncreasing(COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])), ≥)∧0 = 0∧[bni_25] = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_25] + [(-1)bni_25]i140[2] + [bni_25]i70[2] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (23) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (24)    (i140[2] ≥ 0∧i140[2] ≥ 0∧i70[2] ≥ 0 ⇒ (UIncreasing(COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])), ≥)∧0 = 0∧[bni_25] = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_25 + bni_25] + [bni_25]i70[2] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_26] ≥ 0)







For Pair COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → LOAD1777(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655dataNew)), +(i140, 1)) the following chains were created:
  • We consider the chain COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3]) → LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), +(i140[3], 1)) which results in the following constraint:

    (25)    (COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3])≥NonInfC∧COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3])≥LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), +(i140[3], 1))∧(UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), +(i140[3], 1))), ≥))



    We simplified constraint (25) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (26)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), +(i140[3], 1))), ≥)∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (26) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (27)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), +(i140[3], 1))), ≥)∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (27) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (28)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), +(i140[3], 1))), ≥)∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (28) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (29)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), +(i140[3], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)







For Pair LOAD1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → LOAD1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) the following chains were created:
  • We consider the chain LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4]))) which results in the following constraint:

    (30)    (LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4])≥NonInfC∧LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4])≥LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))∧(UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥))



    We simplified constraint (30) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (31)    ((UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥)∧[(-1)bso_30] ≥ 0)



    We simplified constraint (31) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (32)    ((UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥)∧[(-1)bso_30] ≥ 0)



    We simplified constraint (32) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (33)    ((UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥)∧[(-1)bso_30] ≥ 0)



    We simplified constraint (33) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (34)    ((UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_30] ≥ 0)







For Pair LOAD1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140, 0), <(i140, i70)), >(i139, 0)), <(i139, i2)), >(+(i140, 1), 0)), >(+(i139, 1), 0)), java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) the following chains were created:
  • We consider the chain LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))), COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1)) which results in the following constraint:

    (35)    (&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0))=TRUEi70[5]=i70[6]a1655data[5]=a1655data[6]i140[5]=i140[6]i139[5]=i139[6]i2[5]=i2[6]a1654data[5]=a1654data[6]i261[5]=i261[6]i260[5]=i260[6]i262[5]=i262[6]a2155[5]=a2155[6]LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))≥NonInfC∧LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))≥COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))∧(UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥))



    We simplified constraint (35) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (36)    (>(+(i139[5], 1), 0)=TRUE>(+(i140[5], 1), 0)=TRUE<(i139[5], i2[5])=TRUE>(i139[5], 0)=TRUE>=(i140[5], 0)=TRUE<(i140[5], i70[5])=TRUELOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))≥NonInfC∧LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))≥COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))∧(UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥))



    We simplified constraint (36) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (37)    (i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] + [-1] + [-1]i139[5] ≥ 0∧i139[5] + [-1] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧[(-1)Bound*bni_31] + [(-1)bni_31]i140[5] + [bni_31]i70[5] + [bni_31]i139[5] ≥ 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (37) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (38)    (i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] + [-1] + [-1]i139[5] ≥ 0∧i139[5] + [-1] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧[(-1)Bound*bni_31] + [(-1)bni_31]i140[5] + [bni_31]i70[5] + [bni_31]i139[5] ≥ 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (38) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (39)    (i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] + [-1] + [-1]i139[5] ≥ 0∧i139[5] + [-1] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧[(-1)Bound*bni_31] + [(-1)bni_31]i140[5] + [bni_31]i70[5] + [bni_31]i139[5] ≥ 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (39) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (40)    (i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] + [-1] + [-1]i139[5] ≥ 0∧i139[5] + [-1] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_31] + [(-1)bni_31]i140[5] + [bni_31]i70[5] + [bni_31]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (40) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (41)    ([1] + i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] + [-2] + [-1]i139[5] ≥ 0∧i139[5] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_31 + bni_31] + [(-1)bni_31]i140[5] + [bni_31]i70[5] + [bni_31]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (42)    ([1] + i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] ≥ 0∧i139[5] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_31 + bni_31] + [(-1)bni_31]i140[5] + [bni_31]i70[5] + [bni_31]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (42) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (43)    ([1] + i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] ≥ 0∧i139[5] ≥ 0∧i140[5] ≥ 0∧i70[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_31 + (2)bni_31] + [bni_31]i70[5] + [bni_31]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_32] ≥ 0)







For Pair COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → LOAD1777(java.lang.Object(ARRAY(i2, a1654data)), +(i139, 1), java.lang.Object(ARRAY(i70, a1655dataNew)), +(i140, 1)) the following chains were created:
  • We consider the chain COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1)) which results in the following constraint:

    (44)    (COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6])))≥NonInfC∧COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6])))≥LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))∧(UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥)∧[(-1)bso_34] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥)∧[(-1)bso_34] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥)∧[(-1)bso_34] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_34] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → COND_LOAD1777(&&(&&(>(i2, 0), >=(i139, i2)), <(i140, i70)), java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
    • (i70[0] ≥ 0∧i2[0] ≥ 0∧i139[0] ≥ 0∧i140[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_21 + (2)bni_21] + [bni_21]i70[0] + [bni_21]i2[0] + [bni_21]i139[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)
    • (i70[0] ≥ 0∧i2[0] ≥ 0∧i139[0] ≥ 0∧i140[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_21 + (2)bni_21] + [bni_21]i70[0] + [bni_21]i2[0] + [bni_21]i139[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)

  • COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
    • ((UIncreasing(ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_24] ≥ 0)

  • ARRAYACCESS2263(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → COND_ARRAYACCESS2263(&&(&&(>=(i140, 0), <(i140, i70)), >(+(i140, 1), 0)), java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140)
    • (i140[2] ≥ 0∧i140[2] ≥ 0∧i70[2] ≥ 0 ⇒ (UIncreasing(COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])), ≥)∧0 = 0∧[bni_25] = 0∧0 = 0∧0 = 0∧[(-1)Bound*bni_25 + bni_25] + [bni_25]i70[2] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_26] ≥ 0)

  • COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → LOAD1777(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655dataNew)), +(i140, 1))
    • ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), +(i140[3], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)

  • LOAD1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → LOAD1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
    • ((UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_30] ≥ 0)

  • LOAD1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140, 0), <(i140, i70)), >(i139, 0)), <(i139, i2)), >(+(i140, 1), 0)), >(+(i139, 1), 0)), java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
    • ([1] + i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] ≥ 0∧i139[5] ≥ 0∧i140[5] ≥ 0∧i70[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_31 + (2)bni_31] + [bni_31]i70[5] + [bni_31]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_32] ≥ 0)

  • COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → LOAD1777(java.lang.Object(ARRAY(i2, a1654data)), +(i139, 1), java.lang.Object(ARRAY(i70, a1655dataNew)), +(i140, 1))
    • ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_34] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD1777(x1, x2, x3, x4)) = [-1] + [-1]x4 + [-1]x3 + x2   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1, x2)) = [-1] + [-1]x1   
POL(COND_LOAD1777(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + [-1]x4 + x3   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(>=(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(ARRAYACCESS2263(x1, x2, x3, x4)) = [-1] + [-1]x4 + [-1]x3 + x2   
POL(COND_ARRAYACCESS2263(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + [-1]x4 + x3   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(LOAD1777ARR3(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + x2   
POL(java.lang.String(x1, x2, x3, x4)) = [-1]   
POL(COND_LOAD1777ARR3(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x5 + [-1]x4 + x3   

The following pairs are in P>:

COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3]) → LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), +(i140[3], 1))

The following pairs are in Pbound:

LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])
LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))

The following pairs are in P:

LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])
COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])
ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(&&(&&(>=(i140[2], 0), <(i140[2], i70[2])), >(+(i140[2], 1), 0)), java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])
LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))
LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))

There are no usable rules.

(50) Complex Obligation (AND)

(51) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0], java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])
(1): COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])
(2): ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0, java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])
(4): LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))
(5): LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0, java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)

(6) -> (0), if (((i70[6]* i70[0])∧(a1655dataNew[6]* a1655data[0]))∧(i139[6] + 1* i139[0])∧((i2[6]* i2[0])∧(a1654data[6]* a1654data[0]))∧(i140[6] + 1* i140[0]))


(0) -> (1), if ((i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0]* TRUE)∧(i140[0]* i140[1])∧((i2[0]* i2[1])∧(a1654data[0]* a1654data[1]))∧((i70[0]* i70[1])∧(a1655data[0]* a1655data[1]))∧(i139[0]* i139[1]))


(1) -> (2), if ((i140[1]* i140[2])∧((i70[1]* i70[2])∧(a1655data[1]* a1655data[2]))∧((i2[1]* i2[2])∧(a1654data[1]* a1654data[2]))∧(i139[1]* i188[2]))


(6) -> (4), if ((i140[6] + 1* i140[4])∧(i139[6] + 1* i139[4])∧((i70[6]* i70[4])∧(a1655dataNew[6]* a1655data[4]))∧((i2[6]* i2[4])∧(a1654data[6]* a1654data[4])))


(4) -> (5), if ((i140[4]* i140[5])∧((i70[4]* i70[5])∧(a1655data[4]* a1655data[5]))∧(i139[4]* i139[5])∧((i2[4]* i2[5])∧(a1654data[4]* a1654data[5]))∧((i261[4]* i261[5])∧(i260[4]* i260[5])∧(i262[4]* i262[5])∧(a2155[4]* a2155[5])))


(5) -> (6), if ((i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0* TRUE)∧((i70[5]* i70[6])∧(a1655data[5]* a1655data[6]))∧(i140[5]* i140[6])∧(i139[5]* i139[6])∧((i2[5]* i2[6])∧(a1654data[5]* a1654data[6]))∧((i261[5]* i261[6])∧(i260[5]* i260[6])∧(i262[5]* i262[6])∧(a2155[5]* a2155[6])))



The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

(52) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes.

(53) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)
(5): LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0, java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
(4): LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))

(6) -> (4), if ((i140[6] + 1* i140[4])∧(i139[6] + 1* i139[4])∧((i70[6]* i70[4])∧(a1655dataNew[6]* a1655data[4]))∧((i2[6]* i2[4])∧(a1654data[6]* a1654data[4])))


(4) -> (5), if ((i140[4]* i140[5])∧((i70[4]* i70[5])∧(a1655data[4]* a1655data[5]))∧(i139[4]* i139[5])∧((i2[4]* i2[5])∧(a1654data[4]* a1654data[5]))∧((i261[4]* i261[5])∧(i260[4]* i260[5])∧(i262[4]* i262[5])∧(a2155[4]* a2155[5])))


(5) -> (6), if ((i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0* TRUE)∧((i70[5]* i70[6])∧(a1655data[5]* a1655data[6]))∧(i140[5]* i140[6])∧(i139[5]* i139[6])∧((i2[5]* i2[6])∧(a1654data[5]* a1654data[6]))∧((i261[5]* i261[6])∧(i260[5]* i260[6])∧(i262[5]* i262[6])∧(a2155[5]* a2155[6])))



The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

(54) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1)) the following chains were created:
  • We consider the chain COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1)) which results in the following constraint:

    (1)    (COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6])))≥NonInfC∧COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6])))≥LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))∧(UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥))



    We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (2)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥)∧[(-1)bso_14] ≥ 0)



    We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (3)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥)∧[(-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (4)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥)∧[(-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (5)    ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)







For Pair LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) the following chains were created:
  • We consider the chain LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))), COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1)) which results in the following constraint:

    (6)    (&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0))=TRUEi70[5]=i70[6]a1655data[5]=a1655data[6]i140[5]=i140[6]i139[5]=i139[6]i2[5]=i2[6]a1654data[5]=a1654data[6]i261[5]=i261[6]i260[5]=i260[6]i262[5]=i262[6]a2155[5]=a2155[6]LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))≥NonInfC∧LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))≥COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))∧(UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥))



    We simplified constraint (6) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (7)    (>(+(i139[5], 1), 0)=TRUE>(+(i140[5], 1), 0)=TRUE<(i139[5], i2[5])=TRUE>(i139[5], 0)=TRUE>=(i140[5], 0)=TRUE<(i140[5], i70[5])=TRUELOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))≥NonInfC∧LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))≥COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))∧(UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    (i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] + [-1] + [-1]i139[5] ≥ 0∧i139[5] + [-1] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧[(2)bni_15 + (-1)Bound*bni_15] + [bni_15]i2[5] + [(-1)bni_15]i140[5] + [bni_15]i70[5] + [(-1)bni_15]i139[5] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    (i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] + [-1] + [-1]i139[5] ≥ 0∧i139[5] + [-1] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧[(2)bni_15 + (-1)Bound*bni_15] + [bni_15]i2[5] + [(-1)bni_15]i140[5] + [bni_15]i70[5] + [(-1)bni_15]i139[5] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    (i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] + [-1] + [-1]i139[5] ≥ 0∧i139[5] + [-1] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧[(2)bni_15 + (-1)Bound*bni_15] + [bni_15]i2[5] + [(-1)bni_15]i140[5] + [bni_15]i70[5] + [(-1)bni_15]i139[5] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    (i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] + [-1] + [-1]i139[5] ≥ 0∧i139[5] + [-1] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧0 = 0∧0 = 0∧[(2)bni_15 + (-1)Bound*bni_15] + [bni_15]i2[5] + [(-1)bni_15]i140[5] + [bni_15]i70[5] + [(-1)bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (12)    ([1] + i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] + [-2] + [-1]i139[5] ≥ 0∧i139[5] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧0 = 0∧0 = 0∧[bni_15 + (-1)Bound*bni_15] + [bni_15]i2[5] + [(-1)bni_15]i140[5] + [bni_15]i70[5] + [(-1)bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (13)    ([1] + i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] ≥ 0∧i139[5] ≥ 0∧i140[5] ≥ 0∧i70[5] + [-1] + [-1]i140[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧0 = 0∧0 = 0∧[(3)bni_15 + (-1)Bound*bni_15] + [bni_15]i2[5] + [(-1)bni_15]i140[5] + [bni_15]i70[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    ([1] + i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] ≥ 0∧i139[5] ≥ 0∧i140[5] ≥ 0∧i70[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧0 = 0∧0 = 0∧[(4)bni_15 + (-1)Bound*bni_15] + [bni_15]i2[5] + [bni_15]i70[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)







For Pair LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4]))) the following chains were created:
  • We consider the chain LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4]))) which results in the following constraint:

    (15)    (LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4])≥NonInfC∧LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4])≥LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))∧(UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥))



    We simplified constraint (15) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (16)    ((UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥)∧[1 + (-1)bso_18] ≥ 0)



    We simplified constraint (16) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (17)    ((UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥)∧[1 + (-1)bso_18] ≥ 0)



    We simplified constraint (17) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (18)    ((UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥)∧[1 + (-1)bso_18] ≥ 0)



    We simplified constraint (18) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (19)    ((UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_18] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))
    • ((UIncreasing(LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)

  • LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
    • ([1] + i139[5] ≥ 0∧i140[5] ≥ 0∧i2[5] ≥ 0∧i139[5] ≥ 0∧i140[5] ≥ 0∧i70[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))), ≥)∧0 = 0∧0 = 0∧[(4)bni_15 + (-1)Bound*bni_15] + [bni_15]i2[5] + [bni_15]i70[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)

  • LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))
    • ((UIncreasing(LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_18] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD1777ARR3(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x2 + [-1]x5 + [-1]x4 + [-1]x3   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1, x2)) = [-1] + [-1]x1   
POL(java.lang.String(x1, x2, x3, x4)) = [-1]   
POL(LOAD1777(x1, x2, x3, x4)) = [1] + [-1]x4 + [-1]x3 + [-1]x2 + [-1]x1   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(LOAD1777ARR3(x1, x2, x3, x4, x5)) = [-1]x1 + [-1]x4 + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = 0   
POL(>=(x1, x2)) = [-1]   
POL(0) = 0   
POL(<(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   

The following pairs are in P>:

LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))

The following pairs are in Pbound:

LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(&&(&&(&&(&&(&&(>=(i140[5], 0), <(i140[5], i70[5])), >(i139[5], 0)), <(i139[5], i2[5])), >(+(i140[5], 1), 0)), >(+(i139[5], 1), 0)), java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))

The following pairs are in P:

COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), +(i139[6], 1), java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), +(i140[6], 1))

There are no usable rules.

(55) Complex Obligation (AND)

(56) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)


The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

(57) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(58) TRUE

(59) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)
(4): LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))

(6) -> (4), if ((i140[6] + 1* i140[4])∧(i139[6] + 1* i139[4])∧((i70[6]* i70[4])∧(a1655dataNew[6]* a1655data[4]))∧((i2[6]* i2[4])∧(a1654data[6]* a1654data[4])))



The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

(60) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes.

(61) TRUE

(62) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])
(2): ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0, java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])
(3): COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3]) → LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), i140[3] + 1)
(4): LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)

(1) -> (2), if ((i140[1]* i140[2])∧((i70[1]* i70[2])∧(a1655data[1]* a1655data[2]))∧((i2[1]* i2[2])∧(a1654data[1]* a1654data[2]))∧(i139[1]* i188[2]))


(2) -> (3), if ((i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0* TRUE)∧(i188[2]* i188[3])∧(i140[2]* i140[3])∧((i70[2]* i70[3])∧(a1655data[2]* a1655data[3]))∧((i2[2]* i2[3])∧(a1654data[2]* a1654data[3])))


(3) -> (4), if (((i2[3]* i2[4])∧(a1654data[3]* a1654data[4]))∧(i188[3]* i139[4])∧((i70[3]* i70[4])∧(a1655dataNew[3]* a1655data[4]))∧(i140[3] + 1* i140[4]))


(6) -> (4), if ((i140[6] + 1* i140[4])∧(i139[6] + 1* i139[4])∧((i70[6]* i70[4])∧(a1655dataNew[6]* a1655data[4]))∧((i2[6]* i2[4])∧(a1654data[6]* a1654data[4])))



The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

(63) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 5 less nodes.

(64) TRUE